package com.mrjoew.wechat.utils;

import java.security.MessageDigest;

/**
 * @author Christopher Jones
 * @ClassName SHA1Util
 * @explain
 * @date 2020/9/17 0017 10:20
 */
public class SHA1Util {

    private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    public static String encode(String str) {
        if (str == null) {
            return null;
        }
        try {
            // Java自带的加密类
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            // 转为byte
            messageDigest.update(str.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder sb = new StringBuilder(len * 2);
        // 把密文转换成十六进制的字符串形式
        for (byte aByte : bytes) {
            sb.append(HEX_DIGITS[(aByte >> 4) & 0x0f]);
            sb.append(HEX_DIGITS[aByte & 0x0f]);
        }
        return sb.toString();
    }
}
